2

複数の ID をデータベースに正しく保存するのに問題があります。リスト ID と価格の 2 つのパラメータを持つリストがあります。

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 と price を持つリストのみが作成されます。

私はしばらく立ち往生しており、どうすればよいかわかりません。また、データベースがどのように機能するかについてもよくわかりません。誰でも私を助けることができますか?

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

リストを作成するときに、テーブル内のこれらの値を適切に編集できます。Railsコンソールでリストの作成を確認するためのヒントをくれたmuは短すぎます。こんなに便利に使えるとは知りませんでした。

于 2013-06-06T15:28:33.253 に答える