Ruby on rails Rails有一个关联
我现在正在我的网站上建立一个投资组合部分。我将其设置为一个投资组合有一个与之关联的类别Ruby on rails Rails有一个关联,ruby-on-rails,associations,rails-activerecord,Ruby On Rails,Associations,Rails Activerecord,我现在正在我的网站上建立一个投资组合部分。我将其设置为一个投资组合有一个与之关联的类别 class Portfolio < ApplicationRecord has_one :category end 这就是视图中的内容: <li><i class="icon_link"></i><span>Category: </span><%= @portfolio.category.name %></li>
class Portfolio < ApplicationRecord
has_one :category
end
这就是视图中的内容:
<li><i class="icon_link"></i><span>Category: </span><%= @portfolio.category.name %></li>
类别:
我记得以前使用过这个语法,没有任何问题。任何帮助都会很好。我试图在here=上找到这个问题,但无法使它们正常工作。很遗憾,您的分类表中不存在公文包id。验证类别的迁移文件。如果外键是在类别上设置的,那么它应该可以工作 Rails将has_one/behing_关联命名为-如果在
Portfolio
中有category_id
列,则“一个Portfolio属于一个category”和“一个category有一个Portfolio”。您需要将模型改写为:
class Portfolio < ApplicationRecord
belongs_to :category
class Category < ApplicationRecord
has_one :portfolio
每当您在rails中有关联时,该关联必须至少涉及两个实体(或模型)。在您的特定情况下,您已经通过
has_one
关联将投资组合
与类别
关联。但是,您还需要在类别
末尾指定关联。因此,在您的Category.rb
model类中,您需要编写:
class Category < ActiveRecord::Base
belongs_to :portfolio
# other stuff
end
rake db:migrate
指定
所属关联的模型必须在相应的数据库表中具有主键属性。在您的情况下,如果类别
模型具有属于
关联,那么类别
数据库表必须具有标题为投资组合id
的字段,它不存在,因为我在portfolioI中只有类别id链接了文档,以便您可以看到示例。如果您想在您的公文包模型上有一个:类别,您应该将公文包id移动到类别表。类别数据库只是一个所有类别的列表,然后我用类别id引用公文包记录中的哪个类别。听起来您想使用属于:类别而不是有一个。您可以阅读有关的详细信息Rails文档中是否有一个/belishto关联?您确定更好的关联不会是与类别的belishto关联吗。所以公文包属于:范畴,范畴有很多:公文包。那么你的观点就行了。
class Portfolio < ApplicationRecord
belongs_to :category
class Category < ApplicationRecord
has_many :portfolio
class Category < ActiveRecord::Base
belongs_to :portfolio
# other stuff
end
def change
add_column :categories, :portfolio_id, :integer
end