您好我正在制作一个小网站,以帮助我和朋友学习语言。 典型用途:
亚当是英国人,但正在学习日语。 亚当可以通过撰写和提交用日语写的文章来练习他的日语。 Adam(不允许)提交用他的母语撰写的任何文章。 亚当可以阅读正在学习英语的其他用户的文章(用英语写作)
我试图思考如何对此进行建模,并证明它比标准导轨更难以证明,许多属于我习以为常的协会。
生病需要像
这样的功能-show all articles written in adams native language
@adam.native_language.articles
-show all posts written by users just like adam (i.e. learning the same language)
@adam.foreign_language.articles
-perhaps showing all posts written by language learners in one particular language
@language => Japanese
@langauge.posts
我需要用户,文章和语言模型。但是,我如何关联语言和用户模型?感觉语言应该与用户模型关联两次,一次用于native_language,一次用于foreign_language。
答案 0 :(得分:18)
class Language < AR::Base
has_many :native_speakers, :class_name => "User", :foreign_key => "native_language_id"
has_many :second_language_speakers, :class_name => "User", :foreign_key => "second_language_id"
has_many :articles
end
class User < AR::Base
# we expect the users table to have native_language_id and second_language_id columns
belongs_to :native_language, :class_name => "Language"
belongs_to :second_language, :class_name => "Language"
has_many :second_language_articles, :through => :second_language, :source => :articles
has_many :native_language_articles, :through => :native_language, :source => :articles
end
class Article < AR::Base
belongs_to :language
end
这样的事情应该有用。