gpt4 book ai didi

ruby-on-rails - 我如何将一个模型与另一个模型关联两次

转载 作者:行者123 更新时间:2023-12-04 05:21:41 25 4
gpt4 key购买 nike

嗨,我正在制作一个小网站来帮助我和 friend 学习语言。
典型用途:

亚当是英语但正在学习日语。
亚当可以通过写和提交用日语写的文章来练习他的日语。
亚当不能(不允许)提交任何用他的母语写的文章。
亚当可以阅读其他正在学习英语的用户的文章(用英语写的)

我试图思考如何对此进行建模,事实证明它比标准 rails 更困难,许多属于我习惯的关联。

我需要像这样的功能

-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。

最佳答案

是啊,你说得对。用户和语言之间的关联是双重的。使用 Rails 对这种情况进行建模非常容易:

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

这样的事情应该有效。

关于ruby-on-rails - 我如何将一个模型与另一个模型关联两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2606565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com