【问题标题】:Is this a correct way of saving associations in rails?这是在rails中保存关联的正确方法吗?
【发布时间】:2014-01-10 03:36:30
【问题描述】:

我试图在保存一个模型(站点)的同时保存到两个关联表(旅游/站点和站点/场地)。 Tours has_many stop 和 stop 都属于关联表。但因为我在 Stops 控制器中,所以我似乎只能通过 @tour.stops.create 保存,所以我手动进行了创建。

这是我的停靠控制器代码

class StopsController < ApplicationController

  def create
    tour_id = params[:stop][:tour_id]
    #check to make sure venue matches before saving
    venue_name = params[:stop][:venue_name]
    venue_id = Venue.find_by(name: venue_name).id



    @tour = Tour.find(tour_id)

    @stop = @tour.stops.create(strong_params)

    #this seems like it might be ghetto

    Stopsvenuesmembership.create!(venue_id: venue_id, stop_id: @stop.id)

【问题讨论】:

    标签: ruby-on-rails activerecord ruby-on-rails-4 associations


    【解决方案1】:

    我相信传统的做法是

    @stop = @tour.stops.create(params)
    
    @venue = Venue.find_by_name(venue_name) # or however you want to find it
    @venue.stops << @stop
    

    【讨论】:

    • 当我添加这个时,我得到“未定义的方法 `stops' for 7:Fixnum”
    • @user3155441 这很奇怪——我无法想象.find_by_name 会返回一个数字。您是否有可能以某种方式将 @venue 设置为 id 编号而不是对象?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-29
    • 1970-01-01
    • 1970-01-01
    • 2011-09-16
    • 1970-01-01
    • 2019-02-11
    • 2016-06-16
    相关资源
    最近更新 更多