我有兩個類爲:調用類方法的ActiveRecord協會
class Post < ActiveRecord::Base
has_many :comments
end
class Comment < ActiveRecord::Base
belongs_to :post
# Class method
# does some analysis on all the comments of a given post
def self.do_sentiment_analysis
post_id = self.new.post_id # Is there a better way to get post_id?
# real code that does something follows
end
end
# Class method is called on a post object like this:
Post.find(1).comments.do_sentiment_analysis
的問題是,是否有更好的方式來知道哪些類方法被稱爲關聯對象(崗位)的ID 。一種方式(上面使用)是:post_id = self.new.post_id
。 我敢打賭,有一種更清潔的方式,我不必爲了獲得post_id
而創建對象。
這是我正在尋找的確切答案。替代'post_id = self.new.post_id'(如你所建議的):'post_id = Comment.scope_attributes [「post_id」]'。 至於爲什麼我這樣做,它可能會派上用場,如果您想對某個帖子的所有評論進行一些處理並想調用'post.find(1).comments.process_comments'。這個'process_comments'可以是'Comment'的一個類方法。雖然沒有必要,但可能我想知道哪個「所有者」稱爲這個協會 - 這就是問題出現的地方。 –