2

我在获取多个 ID 以正确保存到我的数据库中时遇到问题。我有一个包含两个参数的列表:列表 ID 和价格。

我尝试更改控制器以接受 current_user,但没有运气。我尝试过更改模型,也尝试过手动创建列表,同时为其提供 user_id 和 book_id(检查它是否确实提供了正确的书籍和用户 ID)。在手动清单中,我还尝试使用不带 @ 符号的变量名,虽然没有错误,但我仍然无法将值存储在数据库中

我的上市模式:

class Listing < ActiveRecord::Base
  belongs_to :user
  belongs_to :book
  has_one :order
  belongs_to :user, class_name: 'Listing'
  attr_accessible :listing_id, :price
end

我的用户模型:

class User < ActiveRecord::Base
  has_many :books
  has_many :listings
  belongs_to :creator, class_name: 'User'
end

我的书模型:

class Book < ActiveRecord::Base
  has_one :status
  has_one :listing
  belongs_to :user

  attr_accessible :condition, :isbn, :location, :title, :weight, :comment, :description, :price

  validates :isbn, :isbn_format => true
end 

我的列表控制器中的创建功能

def create
    @listing = Listing.new(params[:listing])
    @listing.user_id = current_user_id

    respond_to do |format|
      if @listing.save
        format.html { redirect_to @listing, notice: 'Listing was successfully created.' }
        format.json { render json: @listing, status: :created, location: @listing }
      else
        format.html { render action: "new" }
        format.json { render json: @listing.errors, status: :unprocessable_entity }
      end
    end
end

我如何尝试手动创建 user_id 和 book_id 列:

<b><%= "Returned: "+doc.css("Ack").text %> </b>           #returns if listing was a failure or success
<b><%= "Listing ID: "+doc.css("ItemID").text %></b>       #returns the listing itemID
<% @book = Book.find_by_id(params[:book_id_num]) %><br /> #passed from a previous page
<% @user = User.find_by_id(current_user.id) %>        
<%= @book.id %>                       #successfully displays the correct book id on the web page
<%= @user.id %>                       #successfully displays the id of the current_user
<% Listing.create(:listing_id => doc.css("ItemID").text, :price => price, :book_id => @book.id, :user_id => @user.id)%>

但是这样做只会创建一个带有listing_id和价格的listing。

我被困了一段时间,不知道如何继续。我也不太熟悉数据库的功能。谁能帮我吗?

4

1 回答 1

0

我想出了我的问题的答案。

使用 rails 控制台,它告诉我它无法在创建列表时编辑某些属性。

我不确定这是否是 Rails 做事的方式,但如果我允许 user_id 和 book_id 是可访问的属性,我可以将具有正确 ID 的列表存储在数据库中。所以我的列表模型如下所示:

class Listing < ActiveRecord::Base
  belongs_to :user
  belongs_to :book
  has_one :order
  belongs_to :user, class_name: 'Listing'
  attr_accessible :listing_id, :price, :user_id, :book_id
end

创建列表时,我可以在表格中适当地编辑这些值。感谢 mu 太短了,无法给我提示在 rails 控制台中检查列表的创建。我不知道它可以以如此有用的方式使用。

于 2013-06-06T15:28:33.253 回答