添加current_user设计为Mongoid关系

时间:2011-10-18 19:24:14

标签: ruby-on-rails mongodb devise mongoid

嗨大家我在Mongoid中有一个关系,我无法将current_user添加到此关系中以获取创建交易的用户。与3模型的关系。

我有三个模型user.rb,house.rb和deal.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

# Relationships
 embedded_in :house, :inverse_of => :deals
 belongs_to :user

在我的 routes.rb

 resources :houses do
  resources :deals
 end

在我的我的houses_controller.rb中,在我的create方法中,我得到了这方面每个房子的current_user:

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

在我的 deals_controller.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?

1 个答案:

答案 0 :(得分:0)

您只需将这两行添加到创建操作:

@deal.user=current_user
@deal.save

我还建议你不要使用create!相反,你应该在脚手架创建动作中使用.new和.save! ;)