嘿,我对现有依赖模型的扩展有问题。好吧,根据 模型之间如下: 我有一个用户模型:
class User <ActiveRecord::Base
has_many :words, :through => :memo_words
has_many :memo_words, :dependent => :destroy
end
class MemoWord
belongs_to :user
belongs_to :word
end
class Word
has_many :translations, :dependent => :destroy
has_many :memo_words, :dependent => :destroy
end
class Translation
belongs_to :word
end
现在是一张图: http://img221.imageshack.us/img221/4232/przedik.png
单词模型用一种语言表示单词,模型表示单个单词的翻译。我想解决表中的记录和Word时的情况,没有记录翻译(单词没有翻译)。我想允许用户添加他们自己的翻译,但通过添加本地(每个用户)完成翻译。由于翻译与用户之间缺乏关系,用户无法添加单词。我怀疑一个好的解决方案是添加模型UserTranslation:
UserTranslation class
belongs_to :word
belongs_to :user
end
变化后的状况图。 http://img851.imageshack.us/img851/7269/75031527.png
其功能与翻译模型相同。在实践中,我必须通过仅添加'belongs_to:user'将模型复制到UserTranslation Translation。有没有更好的方法解决问题
答案 0 :(得分:1)
我建议您在当前的方案中将UserTranslations视为翻译的STI所以 -
class UserTranslation < Translation
belongs_to :user
end
这样,所有用户翻译的单词都将保存在“翻译”表中,但类型为“user_translations”。然后,您可以默认情况下将ID设为未批准,并构建管理员端批准功能。
这样,@ word.translation将产生翻译或user_translation对象。