Ruby On Rails-User-Modell für mehrere Typen

Ich Lerne RoR aus viele Jahre c# und MSSQL.

Ich habe ein Projekt eine Website zu erstellen für meinen Bruder, der ist ein rental property manager. Ich dachte, dies sollte ziemlich einfach sein, wie die Modelle sollten einfach sein, aber es denke, ich kann über das denken alles oder ich habe Probleme mit dem loslassen von der "alten". Egal, hier ist das problem. Ich bin gestartet mit nur zwei Modellen (Benutzer und Eigentum) . Die Eigenschaft Modell ist einfach, der Benutzer nicht so viel. Ich dachte, wir haben drei Arten von Benutzern in dem system. Mieter, Eigentümer und Verwalter (mein Bruder der nur manager, aber ich dachte, ich würde zu entwerfen, es zu wachsen) Er verwaltet die Eigenschaften für mehrere Besitzer, von denen jeder können, besitzen viele Eigenschaften. Jede Eigenschaft wird ein Eigentümer, ein Mieter und eine Krippe.

Mieter können sich einloggen und sehen nur die Eigenschaft, die Sie mieten, um vielleicht füllen Sie eine IH-Anforderung oder sowas in der Art...(keine wirkliche Anforderung an dieser Stelle auch die Mieter eine Anmeldung zum system, aber ich dachte, es wäre eine gute übung)

Gleiche gilt für Eigentümer, keiner von Ihnen wirklich auf das system zugreifen müssen (Sie mieten mein Bruder, so dass Sie nicht haben, involviert zu sein), aber ich dachte, es könnte nett sein, und mal wieder eine gute übung.

Benutzte ich die Nifty_generator zu generieren, die ein Benutzer, die nur gibt E-Mail, Passwort etc. Ich habe verlängert es sich wie folgt...

class AddProfileDataToUsers < ActiveRecord::Migration
  def self.up
    add_column :users, :first_name, :string
    add_column :users, :last_name, :string
     add_column :users, :address1, :string
     add_column :users, :address2, :string
     add_column :users, :city,:string
     add_column :users, :state, :string
     add_column :users, :zip, :string
     add_column :users, :phone, :string
     add_column :users, :email, :string
     add_column :users, :user_type, integer
  end

  def self.down 
    remove_column :users, :first_name 
    remove_column :users, :last_name
   remove_column :users, :address1
   remove_column :users, :address2
   remove_column :users, :city
   remove_column :users, :state
   remove_column :users, :zip 
   remove_column :users, :phone 
   remove_column :users, :email 
   remove_column :users, :user_type
  end
end

Hier ist der code, der zum erstellen des Eigenschaften-Tabelle

class CreateProperties < ActiveRecord::Migration
  def self.up
    create_table :properties do |t|
      t.string :address
      t.string :city
      t.string :type
      t.integer :beds
      t.float :baths
      t.float :price
      t.float :deposit
      t.string :terms
      t.string :laundry
      t.datetime :date_available
      t.integer :sqft
      t.integer :owner_id
      t.integer :manager_id
      t.integer :tenant_id
      t.timestamps
    end
  end

  def self.down
    drop_table :properties
  end
end

Ich habe Folgendes in der user-Modell, wurde von der nifty_authentication generator

class User < ActiveRecord::Base

  #other stuff in the user model up here......
  validates_length_of :password, :minimum => 4, :allow_blank => true

  #this is the stuff that I have added to the user model
  has_many :managed_properties, :class_name => "Property", :foreign_key => "manager_id"
  has_many :owned_properties, :class_name => "Property", :foreign_key => "owner_id"
  has_one :rented_property, :class_name => "Property", :foreign_key => "tenant_id"

Habe ich dann Hinzugefügt, das zu dem Besitz-Modell....

class Property < ActiveRecord::Base
    belongs_to :manager, :class_name => "User" #picked up by the manager_id
    belongs_to :owner, :class_name => "User"  #picked up by the owner_id
    belongs_to :tenant, :class_name => "User"  #picked up by the tenant_id
end

Meine Frage ist, wie sieht das aus ... eine akzeptable Art der Modellierung der situation, die ich beschrieben?

Soll ich mich mit der single table inheritance-und die Schaffung eines Mieter-Modell; ein manager-Modell; und eine Eigentümer-Modell? Das problem sah ich mit dabei, dass war, dass ein einzelner Benutzer könnte sowohl ein manager und ein Eigentümer. Dies könnte dadurch gelöst werden, dann mit einem Rollen-Tabellen für den Benutzer, wo ein Benutzer hat viele Rollen und eine Rolle hat viele Benutzer. Hatte ich auch angeschaut, Profil-Tabelle mit eins-zu-eins übereinstimmung mit der Tabelle user und diese polymorphe aber ich glaube nicht, dass diese situation wirklich fordert und es nicht die Frage zu lösen, wo ein Benutzer kann ein Eigentümer und manager.....

Dies ist, wenn ich begann zu denken, dass vielleicht ich war über das denken das problem und kam mit dem, was Sie hier sehen.

Ich begrüße jeden konstruktiven Kommentare, die Sie haben können. Bitte beachten Sie, dass ich nie wirklich gebaut, alles in Rails und all das ist ein Erster Versuch, vor einer Woche hatte ich noch nie installiert, die Schienen auf meinem computer.

Ich weiß nicht, ob das zählt, aber ich dachte mir, dass der admin /manager, verantwortlich für das anlegen von Benutzern. Ist das nicht ein self-sign-up Art von Website. Der manager wird neuer Besitzer, wenn er sich anmeldet neue Besitzer, und die gleichen gehen für die Mieter. Dadurch wird es einfacher, um zu bestimmen, die Art der Benutzer-er ist zu schaffen.

Vielen Dank für jede Einsicht, die Sie haben können.

InformationsquelleAutor Chris | 2010-10-18
Schreibe einen Kommentar