我有以下课程:
class User < ActiveRecord::Base
attr_accessible :language_id
has_many :lists
end
class List < ActiveRecord::Base
attr_accessible :language_id
belongs_to :user
end
我想自动将用户的 language_id 分配给新创建的列表:
# list.language_id should be equal to user.language_id
list = user.lists.create
我找到的最干净的解决方案是在 List 类中添加一个过滤器:
before_validation :assign_language_id, on: :create
def assign_language_id
self.language_id = self.user.language_id
end
这似乎不是一个糟糕的解决方案,但我想知道 Rails 是否有一些魔法来处理更漂亮的问题。我知道我总是可以要求list.user.language_id
而不是复制它,但请假设,我真的需要在这里拥有它。
谢谢您的回答。