将现有对象与未来用户相关联

时间:2016-10-29 09:00:48

标签: ruby-on-rails devise associations

我试图找到一种方法来自动将很多对象关联到多个用户。我的数据库调用“露营”中有超过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

那么你有更好的想法吗? 谢谢:))

0 个答案:

没有答案