Ruby on rails 如何更新脚手架生成代码中按字段创建的_?

Ruby on rails 如何更新脚手架生成代码中按字段创建的_?,ruby-on-rails,scaffolding,Ruby On Rails,Scaffolding,我使用designgem进行身份验证。我为模型M生成了一个脚手架。我想用登录页面中的用户id更新由创建的字段。我如何做到这一点 我在模型F1和F2中有两个字段 scaffold创建的表单为用户显示输入,以便为F1和F2输入值。如何使用设计中的当前用户更新创建的字段的值?因为create操作似乎只输入表单中的字段 <%= form_with(model: M, local: true) do |form| %> <% if M.errors.any? %> &l

我使用
design
gem进行身份验证。我为模型
M
生成了一个脚手架。我想用登录页面中的用户id更新由创建的
字段。我如何做到这一点

我在模型
F1
F2
中有两个字段

scaffold创建的表单为用户显示输入,以便为
F1
F2
输入值。如何使用
设计中的
当前用户
更新
创建的
字段的值?因为create操作似乎只输入表单中的字段

<%= form_with(model: M, local: true) do |form| %>
  <% if M.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(M.errors.count, "error") %> prohibited this movie from being saved:</h2>

      <ul>
      <% M.errors.full_messages.each do |message| %>
        <li><%= message %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= form.label :F1 %>
    <%= form.text_field :F1 %>
  </div>

  <div class="field">
    <%= form.label :F2 %>
    <%= form.text_field :F2 %>
  </div>

  <div class="actions">
    <%= form.submit %>
  </div>
<% end %>

禁止保存此电影:
如何使用上述表单中的当前用户值更新模型,而不向用户公开该字段

这是我的控制器:

class MsController < ApplicationController
before_action :set_M, only: [:show, :edit, :update, :destroy]

# GET /Ms
# GET /Ms.json
def index
@Ms = M.all

@categories = @Ms.uniq.pluck(:category)
@Ms_by_category = Hash.new

@categories.each do |category|
  @Ms_by_category[category] = M.where(:category => category)
end     
end

# GET /Ms/1
# GET /Ms/1.json
def show
end

# GET /Ms/new
def new
@M = M.new
end

# GET /Ms/1/edit
def edit
end

# POST /Ms
# POST /Ms.json
def create
@M = M.new(M_params)

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

# PATCH/PUT /Ms/1
# PATCH/PUT /Ms/1.json
def update
respond_to do |format|
  if @M.update(M_params)
    format.html { redirect_to @M, notice: 'M was successfully updated.' }
    format.json { render :show, status: :ok, location: @M }
  else
    format.html { render :edit }
    format.json { render json: @M.errors, status: :unprocessable_entity }
  end
end
end

# DELETE /Ms/1
# DELETE /Ms/1.json
def destroy
@M.destroy
respond_to do |format|
  format.html { redirect_to Ms_url, notice: 'M was successfully destroyed.' }
  format.json { head :no_content }
end
end

private
# Use callbacks to share common setup or constraints between actions.
def set_M
  @M = M.find(params[:id])     
end

# Never trust parameters from the scary internet, only allow the white list through.
def M_params
  params.require(:M).permit(:title, :category, :rating)
end
end
class MsControllercategory)
结束
结束
#GET/Ms/1
#GET/Ms/1.json
def秀
结束
#获取/Ms/new
def新
@M=M.new
结束
#获取/Ms/1/edit
定义编辑
结束
#POST/Ms
#POST/Ms.json
def创建
@M=M.new(M_参数)
回应待办事项|格式|
如果@M.save
format.html{将_重定向到@M,注意:'M已成功创建。}
format.json{render:show,status::created,location:@M}
其他的
format.html{render:new}
format.json{render json:@M.errors,status::unprocessable_entity}
结束
结束
结束
#补丁/PUT/Ms/1
#PATCH/PUT/Ms/1.json
def更新
回应待办事项|格式|
如果@M.update(M_参数)
format.html{将_重定向到@M,注意:'M已成功更新。}
format.json{render:show,status::ok,location:@M}
其他的
format.html{render:edit}
format.json{render json:@M.errors,status::unprocessable_entity}
结束
结束
结束
#删除/Ms/1
#删除/Ms/1.json
def销毁
@毁灭
回应待办事项|格式|
format.html{重定向到Ms_url,注意:'M已成功销毁。}
format.json{head:no_content}
结束
结束
私有的
#使用回调在操作之间共享公共设置或约束。
def设置
@M=M.find(参数[:id])
结束
#永远不要相信来自恐怖网络的参数,只允许白名单通过。
def M_参数
参数要求(:M).允许(:标题,:类别,:等级)
结束
结束

创建操作非常简单,例如,更改方法,只需创建客户端

before_action :authenticate_user!

def create
  @client = Client.new(name: params[:name], address: params[:address],created_by: current_user.email  )
  if @client.save
    redirect_to @client
  else 
    render 'new'
  end
end

表中应该有一个类似created_by exist的字段。

创建操作非常简单,例如,更改方法,您只需要创建客户端

before_action :authenticate_user!

def create
  @client = Client.new(name: params[:name], address: params[:address],created_by: current_user.email  )
  if @client.save
    redirect_to @client
  else 
    render 'new'
  end
end

表中应该有一个类似created_by exist的字段。

您需要将用户引用添加到M model并添加关联<代码>由
创建并不是它的最佳名称。让我们想象M是音乐的缩写。在这种情况下,您需要创建一个迁移

add_reference :musics, :user
添加到音乐模型中

belongs_to :user
和用户模型

has_many :musics
以及控制器中的更改

def new
  @music = current_user.musics.new
end

def create
  @music = current_user.musics.new(M_params)

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

您需要向M模型添加用户引用并添加关联<代码>由
创建并不是它的最佳名称。让我们想象M是音乐的缩写。在这种情况下,您需要创建一个迁移

add_reference :musics, :user
添加到音乐模型中

belongs_to :user
和用户模型

has_many :musics
以及控制器中的更改

def new
  @music = current_user.musics.new
end

def create
  @music = current_user.musics.new(M_params)

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

谢谢你的回复。这应该在ApplicationController中吗?请您解释一下您的代码好吗?我想将model
M
与当前用户一起保存—我不太明白您的代码是如何实现的。我想我错过了什么。请帮忙@瓦西里西亚-你能帮我解决这个问题吗?!谢谢谢谢你的回复。这应该在ApplicationController中吗?请您解释一下您的代码好吗?我想将model
M
与当前用户一起保存—我不太明白您的代码是如何实现的。我想我错过了什么。请帮忙@瓦西里西亚-你能帮我解决这个问题吗?!谢谢请将相应的控制器操作添加到问题我已使用控制器代码更新了我的问题。谢谢@瓦西里萨-请帮忙!您想在“创建人”字段中存储什么?用户的id、电子邮件或其他信息?实际上-我的最终目标是-我希望只有创建
M
的用户才能对其执行CRUD操作。因此,我认为如果我们可以将用户id(在我的例子中正好是电子邮件)与
M
的数据一起存储,那么我就可以很容易地包含这个限制。还是有更好的办法(或
Rails
designe
已经提供的一些内置方法,请在问题中添加相应的控制器操作。我已经用控制器代码更新了我的问题。谢谢!@Vasilisa-请帮助!您想在
创建的字段中存储什么?用户id或电子邮件或其他内容?实际上-我的最终目标是——我希望只有创建了
M
的用户才能对其执行CRUD操作。因此,我认为如果我们可以将用户id(在我的情况下,它恰好是电子邮件)与
M
的数据一起存储,那么我就可以轻松地包含此限制。或者有更好的方法吗(或
Rails
designe