ruby-on-rails - 如何在 Rails 3 中创建自定义 "association methods"?

标签 ruby-on-rails ruby-on-rails-3 associations

我已阅读 this article,但它适用于 Rails 1.x。

我真的很想创建自己的关联方法:

user = User.find(1)

# Example of a normal association method
user.replies.create(:body => 'very informative. plz check out my site.')

# My association method
user.replies.find_by_spamminess(:likelihood => :very)

在 Rails 3 中,执行此操作的正确方法是什么?

最佳答案

Rails 3 的处理方式通常不使用 find 方法,而是使用作用域,这会延迟实际的数据库调用,直到您开始迭代集合为止。

猜测你的第一个例子,我会这样做:

类里面回复...

  scope :spaminess, lambda {|s| where(:likelyhood => s) }

然后使用它:

 spammy_messages = user.replies.spaminess(:very)

或者在 View 中使用它

spammy_messages.each do |reply|
   ....
end

关于ruby-on-rails - 如何在 Rails 3 中创建自定义 "association methods"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5213407/

相关文章:

ruby-on-rails - 使用多对多关系时如何插入行

ruby - active_admin 资源/index.html.arb 缓慢

C++ : Association, 聚合和组合

ruby-on-rails - 在模型保存时获取 ActiveRecord::AssociationTypeMismatch

mysql - Cakephp 模型关联及其所需的 mysql 查询量

ruby-on-rails - 通过组关系列出属于用户的文档模型的所有实例

ruby-on-rails - Rails项目在生产中显示开发样式错误

javascript - 为什么 HTTP 删除需要 javascript 才能工作?

javascript - WebStorm + RubyMine 一起(?)

ruby-on-rails-3 - Ruby on Rails : How to customize validation error message?