Ruby on rails 铁路协会

Ruby on rails 铁路协会,ruby-on-rails,Ruby On Rails,我似乎不能把心思集中在铁路协会上。假设我有三张桌子。一个用于用户,一个用于配方,一个用于配料。下面是一个数据库示例(以yaml表示): 现在我该怎么做才能让一个用户有很多食谱,一个食谱可以有很多成分。还能找到每种配料的所有配方吗 例如,funnyusername创造了“比萨面团”的配方,它的成分包括面粉、水和酵母。现在,当我搜索酵母时,我想让它列出包含酵母的配方列表。以下是关联: # In User.rb has_many :recipes # In Recipe.rb belongs_to

我似乎不能把心思集中在铁路协会上。假设我有三张桌子。一个用于用户,一个用于配方,一个用于配料。下面是一个数据库示例(以yaml表示):

现在我该怎么做才能让一个用户有很多食谱,一个食谱可以有很多成分。还能找到每种配料的所有配方吗


例如,funnyusername创造了“比萨面团”的配方,它的成分包括面粉、水和酵母。现在,当我搜索酵母时,我想让它列出包含酵母的配方列表。

以下是关联:

# In User.rb
has_many :recipes

# In Recipe.rb
belongs_to :user
has_and_belongs_to_many :ingredients

# In Ingredient.rb
has_and_belongs_to_many :recipes
现在,假设有一个包含两列的
components\u recipes
表,
recipe\u id
&
component\u id
。因此,通过您的示例,您可以通过以下方式找到所有酵母配方:

@recipes = Ingredient.find(:all, :conditions => {:name=> 'Yeast'}).recipes;
在你的情况下,你有很多食谱中出现的成分,也有很多成分的食谱。有了Rails(实际上是ActiveRecord)关联,这是拥有并属于许多人的(HABTM)被解释了


这里的惯例是,当您将两个表与HABTM关联时,将有一个包含两列的连接表,每列都指向表的主键。此联接表本身没有相应的模型。最后,表的命名约定是按字母顺序将联接表联接的两个表名(配料和食谱)联接起来。在你的例子中:配料和食谱。这当然可以被覆盖

以下是关联:

# In User.rb
has_many :recipes

# In Recipe.rb
belongs_to :user
has_and_belongs_to_many :ingredients

# In Ingredient.rb
has_and_belongs_to_many :recipes
现在,假设有一个包含两列的
components\u recipes
表,
recipe\u id
&
component\u id
。因此,通过您的示例,您可以通过以下方式找到所有酵母配方:

@recipes = Ingredient.find(:all, :conditions => {:name=> 'Yeast'}).recipes;
在你的情况下,你有很多食谱中出现的成分,也有很多成分的食谱。有了Rails(实际上是ActiveRecord)关联,这是拥有并属于许多人的(HABTM)被解释了


这里的惯例是,当您将两个表与HABTM关联时,将有一个包含两列的连接表,每列都指向表的主键。此联接表本身没有相应的模型。最后,表的命名约定是按字母顺序将联接表联接的两个表名(配料和食谱)联接起来。在你的例子中:配料和食谱。这当然可以被覆盖

啊,谢谢你!现在我要测试一下,看看数据库,真正理解它=啊哈,谢谢!现在我将测试它,并查看数据库以真正理解它=p