gpt4 book ai didi

ruby-on-rails - Rails 链接表belongs_to 或has_many 不起作用

转载 作者:行者123 更新时间:2023-12-04 06:12:46 26 4
gpt4 key购买 nike

我有三个表 User、User_types 和 Purchases。

  • 用户:身份证等
  • user_purchase_types : id, typename, user_id
  • 采购: id、user_id、user_purchase_type_id、备注

  • 用户可以有任意数量的购买和 user_types。一次购买可以有一个 user_purchase_type。

    用户可以登录、创建类型、购买等 - 这一切都很好

    但是,我想在列出购买时看到 user_purchase_types.typename,而不是 ID 号。我认为很简单,使用belongs_to,它们已经有了正确的id 字段,应该可以正常工作。但它没有

    我已经尝试了belongs_to、has_many、has_many等等的一百万种变体,但无法获得正确的关系,因此显示类型名而不是id。

    表中有正确的外键 ID 字段,所以这应该可以工作。

    在购买 Controller 中列出购买时,我使用@purchase = current_user.purchases。
    当循环显示在 View 中时,我认为我应该能够使用 purchase.user_purchase_type.typename 但这给了我一个“NoMethodError”。

    我做错了什么,或者我应该对数据库进行非规范化并完成它?

    根据要求编辑模型
    class UserPurchaseType < ActiveRecord::Base
    belongs_to :user
    belongs_to :purchase
    attr_accessible :typename, :id
    end

    class User < ActiveRecord::Base
    devise :database_authenticatable, :registerable,
    :recoverable, :rememberable, :trackable, :validatable

    has_many :purchases, :dependent => :destroy
    has_many :user_purchase_types, :dependent => :destroy
    end

    class Purchase < ActiveRecord::Base
    belongs_to :user
    has_many :user_purchase_types
    attr_accessible :date, :user_purchase_type_id, :note
    end

    index.erb 文件
    <% @purchases.each do |purchase| %>    #this works
    <tr>
    <td><%= purchase.user_purchase_type.typename %></td> #this fails
    <td><%= purchase.date %></td>
    <td><%= purchase.note %></td>
    </tr><p>
    <% end %>

    购买 Controller
    def index
    @user_purchase_types = current_user.user_purchase_types # this works
    @purchases = current_user.purchases #this works

    最佳答案

    您只需要在现有关联中添加外键。

    class Purchase < ActiveRecord::Base
    belongs_to :user
    has_many :user_purchase_types, :foreign_key => 'user_purchase_type_id'
    attr_accessible :date, :user_purchase_type_id, :note
    end

    关于ruby-on-rails - Rails 链接表belongs_to 或has_many 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7581093/

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