我刚刚升级到Ruby 2.0,默认情况下会为Padrino应用程序加载ActiveRecord 4。这很好,我想利用Ruby 2.0和AR 4的改进。但是,我在重写之前有效的一些关系时遇到了麻烦。
例如,这不再有效:
has_many :dvd_credits, :order => 'position', :include => [:dvd_actor, :dvd_role]
它提供了一个弃用的警告,但它显示的示例是无用的:has_many :spam_comments, -> { where spam: true }, class_name: 'Comment'
通过省略:include
参数:
has_many :dvd_credits, -> { order :position }
如果我这样添加:
has_many :dvd_credits, -> { order :position, include: [:dvd_actor, :dvd_role] }
当我打电话给那个关系时,我收到了这个错误:
ArgumentError: Direction should be :asc or :desc
我仍然要掌握AR 4的变化,但我真的很感激这方面的帮助。
感谢。
PS 我确实在AR 4页面中找到了这个:
没有必要使用包含直接关联 - 也就是说, 如果你有订单belongs_to:customer,那么客户就是 在需要时自动加载。
我认为我可以放心地忽略include:
参数?
但是这种关系有点复杂,它是这样的:
class Dvd < ActiveRecord::Base
has_many :dvd_credits, -> { order :position }
has_many :dvd_actors, :through => :dvd_credits
has_many :dvd_roles, :through => :dvd_credits
class DvdCredit < ActiveRecord::Base
belongs_to :dvd_actor, :inverse_of => :dvd_credits
belongs_to :dvd_role, :inverse_of => :dvd_credits
belongs_to :dvd, :inverse_of => :dvd_credits
class DvdActor < ActiveRecord::Base
has_many :dvd_credits, :inverse_of => :dvd_actors
has_many :dvds, :through => :dvd_credits
但似乎符合belongs_to
条件。
答案 0 :(得分:0)
是的,你可以忽略:include
部分。