如何通过has_many关联创建新对象时获取范围属性

时间:2014-10-17 23:44:19

标签: ruby-on-rails activerecord

通过has_many之类的User.first.books.create!(...)关联创建对象时,新书会自动从关联中获取user_id

如果我调用自己的create方法,有没有办法获得user_id?即User.first.books.own_create_method

def self.own_create_method
  # how to get the user object?
end

谢谢!

2 个答案:

答案 0 :(得分:0)

要定义User.first.books.own_create_method,您将使用:

def self.own_create_method
  book = build
  # something custom you want to do with book
  book.save
end

self.允许您在Ruby中定义类方法。

答案 1 :(得分:0)

深入研究ActiveRecord new方法,我发现你可以调用scope_attributes并获得一个包含所有作用域属性的哈希值。

def self.own_create_method
   attributes = scope_attributes
   # attributes["user_id"] would be the user_id that is scoped by
   ...
end

不确定这是不是一个好习惯......