我正在使用 Ruby on Rails 3.2.2,我想知道为了处理has_many :through
ActiveRecord::Association
. 也就是说,我有:
class User < ActiveRecord::Base
has_many :article_editor_associations, :class_name => 'Articles::UserEditorAssociation'
has_many :articles, :through => :article_editor_associations
end
class Article < ActiveRecord::Base
has_many :user_editor_associations, :class_name => 'Articles::UserEditorAssociation'
has_many :editor_users, :through => :user_editor_associations
end
class Articles::UserAssociation < ActiveRecord::Base
belongs_to :editor_users
belongs_to :articles
end
通过使用上面的代码,我可以运行该@article.editor_users
方法来检索EditorArray
。但是,为了使事情更适合我的应用程序(例如,为了以“程序化”方式处理 I18n 翻译和类似的事情),我正在考虑向我的应用程序添加一个新模型,例如以下: User
class EditorUser < User # Note the class name and the class inheritance
...
end
这样,通过我的应用程序,我可以引用EditorUser
该类,以便像处理User
对象一样处理文章“编辑器用户”实例......更多,因为继承,EditorUser
我可以在类中声明“特定方法”(例如,范围方法)仅适用于EditorUser
实例(不适用于User
实例)...
这是一种“常见”的方法来制作我想做的事情吗?是“铁路之路”吗?如果是这样,我可以/应该做什么来处理这种情况?如果没有,我怎么能/应该继续?
换句话说,我认为使用类EditorUser < User ... end
是因为关联的对象(通过运行方法EditorUser
检索)是对象。我认为通过在目录(或其他地方)中声明一个类可以简化我的应用程序中的事情,因为您可以解决该常量名称(例如,您可以“使用”该常量名称以“构建”翻译字符串或通过说明仅用于实例的新方法)。@article.editor_users
User
EditoUser
app/models
EditorUser