我试图找到一种方法来自动将很多对象关联到多个用户。我的数据库调用“露营”中有超过6000行(记录)对象。我从不同的来源收集数据。
我有一个设计用户模型调用“proprietaire”,我想允许拥有露营的用户只修改他的对象。为此,我的第一个解决方案是“proprietaire_id”和“camping_id”。
但是如果想让proprietaire修改他的露营,我必须允许这个manualy,这是一个漫长的工作......
所以我找到了一个新东西:我有两个相同的字段=>电子邮件。野营电子邮件联系方式可以与proprietaire相同。如果电子邮件proprietaire与电子邮件露营相同,那么proprietaire可以编辑他的露营。
我不确定这是最好的方法,因为如果一个proprietaire使用另一个或修改他的电子邮件,他就无法编辑他的露营......
如果电子邮件对于proprietaire和露营来说是相同的,也许“中间”解决方案可以保存proprietaire_id。但我也不确定。
Campings_controller.rb
before_action :set_camping, only: [:show, :edit, :update, :proprio_owner]
before_action :authenticate_proprietaire!,except:[:homesearch, :index, :result, :show, :resultnohome]
before_action :proprio_owner, only: [:edit, :update, :destroy]
#Autoriser le proprietaire à modifier son camping s'il a le proprietaire_id
def proprio_owner
unless @camping.proprietaire_id == current_proprietaire.id || @camping.courriel == current_proprietaire.email
flash[:notice] = "Vous n'êtes pas autorisé à modifier ce camping"
redirect_to campings_path
end
end
camping.rb
class Camping < ApplicationRecord
belong_to :proprietaire
end
proprietaire.rb
class Proprietaire < ActiveRecord::Base
has_many :campings
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_attached_file :avatar, styles: { small: "30x30>", medium: "300x300>", thumb: "100x100>" }, default_url: "/images/:style/missing.jpg"
validates_attachment_content_type :avatar, :content_type => ["image/jpg", "image/jpeg", "image/png", "image/gif"]
def index
end
end
那么你有更好的想法吗? 谢谢:))