Ruby on rails 如何将一个模型的值保存到另一个模型中?

Ruby on rails 如何将一个模型的值保存到另一个模型中?,ruby-on-rails,ruby-on-rails-3,associations,Ruby On Rails,Ruby On Rails 3,Associations,我有用户模型和语言模型,其中语言模型包含不同的语言,我希望用户从该模型中选择语言,并且应该为相应的用户存储这些语言。考虑有五种语言 a、b、c、d、e < /代码>,然后用户必须从语言中选择。假设user 1选择A和C,而user 2选择B和D,则必须为该用户存储语言。我该怎么做?请帮帮我。您需要建立关系模型。如链接中所述,这可以通过声明 class User < ActiveRecord::Base has_and_belongs_to_many :languages end cl

我有
用户模型
语言模型
,其中语言模型包含不同的语言,我希望用户从该模型中选择语言,并且应该为相应的用户存储这些语言。考虑有五种语言<代码> a、b、c、d、e < /代码>,然后用户必须从语言中选择。假设
user 1
选择
A和C
,而
user 2
选择
B和D
,则必须为该用户存储语言。我该怎么做?请帮帮我。

您需要建立关系模型。如链接中所述,这可以通过声明

class User < ActiveRecord::Base
  has_and_belongs_to_many :languages
end

class Language < ActiveRecord::Base
  has_and_belongs_to_many :users
end
class用户

创建一个名为
language\u users
的新表来存储
user\u id
language\u id
。此表中的每条记录都表示特定用户选择了特定语言。

您可以通过关联来执行此操作,在您的情况下,您可以尝试以下操作:

class用户

拥有并且属于多种语言

end

类语言

拥有且属于多个:用户

end

或者你可以通过以下链接浏览


好的,这将存储用户有某某语言,而每种语言都有这些用户,但是我们可以在用户模型本身中将语言值存储为数组吗?如果您限制任何单个用户可以选择的语言数量,那么这样做才有意义。可能最多有20种语言。那么我能做到吗?蛮力(恐怖)的方式是有20个独立的栏目。你显然不应该那样做。下一个最好的选择是使用数组类型的列,这在SQL中是不可能的,但在mongodb中是可能的,因为数据以完全不同的方式表示(它没有列)。使用SQL,您可以通过将一组索引存储在单个列中作为字符串或编码为整数来解决此问题,但这会使查询效率低下,因为您必须进行一些处理才能提取索引。我认为您有两个选项:(1)使用上述标准方法(这实际上是在SQL中执行类似操作的方式),或者(2)尝试mongodb。好的,这存储用户有某某语言,每种语言都有这些用户,但是我们可以在用户模型本身中将语言值存储为数组吗?对不起,我指的是语言。我尝试的是,我有一个iphone应用程序,其中有一个文本字段语言,用户可以从列表中选择多种语言d它应该被存储。@ragupathi如果您使用关联也这样做就好了,否则您将不得不在模型中定义与您选择的语言数量一样多的字段,并且与cdesrosiers提到的情况相同。为什么我们不能将值作为数组存储在单个字段本身中?为什么我们需要的字段数量与cdesrosiers提到的字段数量一样多语言?您使用的是哪个数据库?我的意思是,就SQL而言,您不能有数组类型的列,我使用的是Neo4j数据库,它也没有数组类型的属性。