1
こんにちは私はMongoidにリレーションシップを持っており、このリレーションにcurrent_userを追加して取引を作成するユーザーを取得することはできません。 3モデルとの関係。current_userを追加するMongoid関係を作成する
私は三つのモデルのuser.rb、house.rbを持っていると
user.rb関係(モデルを考案)
# Relationships
has_many :houses, dependent: :destroy
has_many :deals, dependent: :destroy
key :title
house.rb
# Relationships
belongs_to :user
embeds_many :deals
をdeal.rb
deal.rb
私の作成方法の私のhouses_controller.rbで私の routes.rbをresources :houses do
resources :deals
end
で
# Relationships
embedded_in :house, :inverse_of => :deals
belongs_to :user
私はこの辺の各家のためにCURRENT_USERを取得:私のdeals_controllerで
def create
#@house = House.new(params[:house])
@house = current_user.houses.new(params[:house])
respond_to do |format|
if @house.save
format.html { redirect_to @house, notice: 'House was successfully created.' }
format.json { render json: @house, status: :created, location: @house }
else
format.html { render action: "new" }
format.json { render json: @house.errors, status: :unprocessable_entity }
end
end
end
.rb私はこの方法を作成しました:
def create
@house = House.find_by_slug(params[:house_id])
@user = User.find(:user_id)
@deal = @house.deals.create!(params[:deal])
redirect_to @house, :notice => "Comment created!"
end
この最後のメソッドを追加すると、取引を作成したcurrent_userが作成されます。
@deal.user=current_user
@deal.save
そして、私はまた、あなたが作成し使用しないことをお勧め:
ありがとうございました!私は変更を新しく作成して保存します:D。しかし、house.rbと "embedded_in:houseの" embeds_many:deals "の場合、deal.rbに" inverse_of =>:deal "というエラーが表示されます。"(n)取引文書の参照は、取引が組み込まれているため許可されています。しかし、has_manyとbelongs_toはうまく動作します。 embeds_manyやhas_manyと参照を使って作業するのが最善でしょうか?ありがとうございます – hyperrjas
@hyperrjasが見ているエラーを避けるために、誰かがこの問題を遭遇した場合、つまり、「取引が埋め込まれているため、(n)取引文書をリレーショナル・アソシエーションを介してユーザー文書から参照することはできません。彼の最初の質問で定義したuser.rbからこの行を削除してください#has_many:deal、dependent::destroy – brg