我的两个模型用户和提交如下:
class User < ActiveRecord::Base # Associations has_many :submissions accepts_nested_attributes_for :submissions # Setup accessible (or protected) attributes for your model attr_accessible :email,:name,:role,:submission_ids,:quotation_ids,:submissions_attributes validates :email,:presence => {:message => "Please enter a valid email address" } validates :email,:uniqueness => { :case_sensitive => false } end class Submission < ActiveRecord::Base belongs_to :user attr_accessible :due_date,:text,:title,:word_count,:work_type,:rush,:user,:notes validates :work_type,:presence => true validates :text,:length => { :minimum => 250 } validates :word_count,:numericality => { :only_integer => true } end
def index @user = User.new @user.submissions.build end def create @user = User.where(:email => params[:user][:email]).first_or_create(params[:user]) if @user redirect_to :root else render 'pages/index' end end
我想要做的是首先通过提交的电子邮件检查用户是否已经存在于系统中.如果是,那么我想为该用户创建提交.否则,请同时创建用户和提交.
我对如何使用first_or_create方法执行此操作感到困惑.
任何帮助赞赏.
解决方法
first_or_create
accepts a block.所以你可以这样做:
@user = User.where(:email => params[:user][:email]).first_or_create do |user| # This block is called with a new user object with only :email set # Customize this object to your will user.attributes = params[:user] # After this,first_or_create will call user.create,so you don't have to end
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。