HTML

Ruby on Rails

Könnyű Ruby on Rails programozási útmutatók

Friss topikok

Új osztály létrehozása paraméterekkel hash értékekkel

2010.10.25. 12:44 :: Semper Augustus

Ebben az útmutatóban leírom, hogy miképpen lehet olyan új osztályt készíteni hash paraméterekből, amelyhez nem szükséges active record. Amennyiben nem használsz adatmázist az object mentésére, ez a leírás neked való! Legelőször csináljunk egy új contact.rb fájlt az "app/models" könyvtárban.

class Contact
 include ActiveModel::Serialization
 attr_accessor :name, :company_name, :email, :phone, :comment

 def initialize(attributes = {})
  @name=attributes[:name]
  @company_name=attributes[:company_name]
  @email=attributes[:email]
  @phone=attributes[:phone]
  @comment=attributes[:comment]
 end
 
# persisted fontos, hogy ne kapjunk "undefined method `to_key' for" hibaüzenetet
 def persisted?
  false
 end 
 
end

Ezután már új form létrehozására is használhatjuk a modelünket, akárcsak egy ActiveRecord-os model esetében:

@contact=Contact.new

vagy:

@contact=Contact.new(params[:contact])

Ezt az objectet használhatjuk arra, hogy email-ben küldük el az adatokat az értékesítőknek, vagy arra is, hogy egy másik, adatbázist hsználó object-be ágyazzuk json segítségével. Például, ha van egy json_contact nevű text mezőnk a User active_record object-ben, users.rb:

Class User < ActiveRecord::Base
before_save :before_save_function

def before_save_function
  self.json_contact=self.json_contact.to_json
  true
 end

 def contact
  unless self.json_contact.nil? then
   contact_hash = ActiveSupport::JSON.decode(self.json_contact).symbolize_keys.clone
   return Contact.new(contact_hash)
  else
   return nil
  end
 end

end

Ezután hozzáadhatjuk a Contact objectet a User.json_contact-hoz úgy, mint:

@user=... # bármi (find, vagy new)
@contact=Contact.new(params[:contact])
@user.json_contact=@contact
@user.save

Ne felejtsd el újraindítani az alkalmazást, ha bármi változás van a modelekben. Mostmár megkaphatjuk az eredeti User.contact-ot, mint egy objectet, és úgy is használható, mint egy Contact model:

contact_name=@user.contact.name

Ennyi az egész!

Az útmutató angol másolata megtalálható: ruby-on-rails-tutorials.blogspot.com/2010/10/create-new-class-in-rails3-with.html

 

Szólj hozzá!

Címkék: tutorial ruby on rails hogyan how to osztály ruby guide class hash rails3

A bejegyzés trackback címe:

https://ruby-on-rails.blog.hu/api/trackback/id/tr52397196

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása