gpt4 book ai didi

ruby-on-rails-3 - Rails 3 - 如何通过关联获取数据

转载 作者:行者123 更新时间:2023-12-04 05:58:33 25 4
gpt4 key购买 nike

整个下午我都在努力从协会获取数据。我有这 3 个模型:

用户

  has_many :user_cars

汽车
  has_one :user_cars

用户车
  belongs_to :car
belongs_to :user

user_cars 有列
user_id
car_id

如果当前登录的用户拥有这辆车,我会查看所有汽车和我想打印的每辆车的声明。

我正在尝试这样做:
<% @user_cars.car.name%>

但这给了我错误
undefined method `car' for #<ActiveRecord::Relation:0x0000012edc14a8>

我想问你 - 我是否已经在关联或 View 中出错了?

编辑:
<% @cars.each_with_index do |car, i|%> #loop through all cars in the system
#in the every loop I would like to print, if the user has this one

<% @user_cars.each do |c| %> #through the loop I can get it, but I think is not efficient
<li><%= c.car.name %></li>
<% end %>

<% end %>

最佳答案

@user_cars 是如何初始化的?您似乎将 User#user_cars 作为其值。试试

<% @user_cars.each do |c| %>
<li><%= c.car.name %></li>
<% end %>

你也可以使用 has_many :through简化连接:
# User model
has_many :user_cars
has_many :cars, :through => :user_cars

然后所有属于用户的汽车都可以通过 User#cars 访问。

如果要检查给定的汽车是否属于用户,可以先获取该用户拥有的所有汽车(请记住先将上述行添加到用户模型中):
@owned_cars = current_user.cars.all

然后检查给定的汽车是否包含在此列表中:
<% @cars.each_with_index do |car, i|%> #loop through all cars in the system
<% if @owned_cars.include?(car) %>
<%= car.name %> is owned by the user
<% else %>
<%= car.name %> is not owned by the user
<% end %>
<% end %>

关于ruby-on-rails-3 - Rails 3 - 如何通过关联获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9216026/

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