Rails3:如何将默认条件设置为has_many

pet*_*hka 3 ruby-on-rails associations has-many finder-sql

我有盒子和球.球在盒子里.球可以是红色和绿色.

class Box < ActiveRecord::Base
  has_many :balls
end

class Ball < ActiveRecord::Base
  belongs_to :box
  scope :green, where(:color => "green")
end
Run Code Online (Sandbox Code Playgroud)

我想只用绿球设置has_many.我知道finder_sql方法存在,但我不知道如何通过范围设置.

我希望以下示例相同:

@orders = @box.balls
@orders = @box.balls.green
Run Code Online (Sandbox Code Playgroud)

mdr*_*iel 7

你可以随时使用:

has_many :balls, :conditions => { :color => "green" }
Run Code Online (Sandbox Code Playgroud)

它适用于Rails3,但我不确定是否由于某些ActiveRecord :: Relation等效而不推荐使用此语法.在与Rails3相关的官方文档中,这种语法仍然可用,所以我猜这就像在2.3.x分支中一样.

  • 请注意,您可能希望调用关联:green_balls以获得清晰度. (2认同)