【发布时间】:2018-05-23 15:25:37
【问题描述】:
创建 user_activities 表时,我添加了一些外键,因为我无法再创建任何活动,并且 rails 不会给我错误, 这是我的代码
表格:
<div class="form-group">
<%= f.input :title, label: "Titre (optionnel)", class: "form-control" %>
</div>
<div class="form-group">
<%= f.label :content, 'Contenu (requis)' %>
<%= f.text_area :content, id: "wysiwyg" %>
</div>
<div class="form-group">
<%= f.input :group_id, prompt: "- Choisir un groupe (requis) -", label: false, collection: current_user.groups.order('name') %>
</div>
<div class="form-group">
<%= f.button :submit, @activity.new_record? ? "Créer l'activité" : "Mettre à jour l'activité", class: "btn btn-outline-primary btn-sm" %>
</div>
活动控制器
def create
@activity = Activity.new(activity_params)
@activity.user = current_user
if @activity.save
flash[:notice] = "Votre activité a été créée !"
redirect_to root_path
else
flash[:alert] = "Erreur lors la création"
redirect_to root_path
end
end
def activity_params
params.require(:activity).permit(:content, :title, :group_id)
end
型号:
# useractivity
belongs_to :activity
belongs_to :user
validates :user, uniqueness: { scope: :activity }
# user
has_many :user_activities
has_many :activities
has_many :activities, through: :user_activities
# Activity
has_many :user_activities, dependent: :destroy
belongs_to :category
has_many :users, through: :user_activities
belongs_to :user
validates :content, presence: true
追踪:
Started POST "/activities" for 127.0.0.1 at 2018-05-24 09:38:18 +0200
Processing by ActivitiesController#create as JS
Parameters: {"utf8"=>"✓", "authenticity_token"=>"j1AMcsR16eBMf+6nTO9NN17NE7Qhz0DS07hu+w1YtYopYcwaRbQw6ThkCK3RQ0wY5MqNxM7Fe9VXezSHAZgUnw==", "activity"=>{"title"=>"TESTTITLE", "content"=>"<p>TESTCONTENT</p>", "group_id"=>"1"}, "commit"=>"Créer l'activité"}
User Load (2.9ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT $2 [["id", 2], ["LIMIT", 1]]
↳ /home/benjamin/.rbenv/versions/2.5.0/lib/ruby/gems/2.5.0/gems/activerecord-5.2.0.rc1/lib/active_record/log_subscriber.rb:98
(4.1ms) BEGIN
↳ app/controllers/activities_controller.rb:9
Group Load (0.5ms) SELECT "groups".* FROM "groups" WHERE "groups"."id" = $1 LIMIT $2 [["id", 1], ["LIMIT", 1]]
↳ app/controllers/activities_controller.rb:9
(0.2ms) ROLLBACK
↳ app/controllers/activities_controller.rb:9
Redirected to http://localhost:3000/
Completed 200 OK in 22ms (ActiveRecord: 8.0ms)
控制器:
def create
@activity = Activity.new(activity_params)
@activity.user = current_user
#line 9 ---->
if @activity.save
flash[:notice] = "Votre activité a été créée !"
redirect_to root_path
else
flash[:alert] = "Erreur lors la création"
redirect_to root_path
end
end
【问题讨论】:
-
请发布您在日志中遇到的错误
-
这里有冲突:
has_many :activities; has_many :activities, through: :user_activities。您定义了activities关系两次。尝试重命名其中的第一个(您需要指定class_name)并坚持使用through行。如果您只打算使用has_many through关系,则可以完全删除它。 -
我已做出更改,但我无法添加或编辑一项活动:/
标签: ruby-on-rails ruby database foreign-keys