Witam,
mam dwie tabele users i things
chciałabym wyświetlić dane z ich obu jednocześnie dla konkretnej thing + mieć możliwość operacji na tych danych (policzenie VATu)
Chyba, że jest jakiś lepszy sposób aby wyświetlić fakturę?
Witam,
mam dwie tabele users i things
chciałabym wyświetlić dane z ich obu jednocześnie dla konkretnej thing + mieć możliwość operacji na tych danych (policzenie VATu)
Chyba, że jest jakiś lepszy sposób aby wyświetlić fakturę?
Czyli user ma wiele thingów, czy jak? Daj jakieś modele jak to masz zdefiniowane. Wróżek dziś nie ma na forum
Przepraszam - napisałam jak osioł.
User ma wiele thingów ale ja chcę wyświetlić tylko thinga o numerze X i jego dane oraz dane usera, który ten thing zakupił.
Modele:
user.rb
[code]class User < ActiveRecord::Base
has_many :things, :dependent => :destroy
validates :name, :presence => true
validates :name, :length => { :minimum => 2, :too_short => “Conajmniej %{count} znaki musi zawierać nazwa firmy” }
validates :nip, :presence => true
validates :nip, :length => { :is => 10, :wrong_length => “%{count} cyfer musi zawierać NIP” }
validates :nip, :numericality => { :only_integer => true }
validates :street, :presence => true
validates :street, :length => { :minimum => 2, :too_short => “Conajmniej %{count} znaki musi zawierać nazwa ulicy” }
validates :zip, :presence => true
validates :zip, :length => { :is => 6, :wrong_length => “%{count} znaków musi zawierać kod pocztowy” }
validates :city, :presence => true
validates :city, :length => { :minimum => 2, :too_short => “Conajmniej %{count} znaki musi zawierać nazwa miasta” }
validates :password, :confirmation => true
validates :email, :uniqueness => true
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
attr_accessible :email, :password, :password_confirmation, :remember_me, :nip, :name, :street, :zip, :city
def to_label
“#{name}”
end
end[/code]
thing.rb
[code]class Thing < ActiveRecord::Base
belongs_to :user, :readonly => true
attr_accessible :amount, :cost, :date_start, :text
validates :text, :presence => true
validates :text, :length => {
:minimum => 2,
:maximum => 25,
:tokenizer => lambda { |str| str.scan(/\w+/) },
:too_short => “Tekst musi zawierać co najmniej %{count} słowa”,
:too_long => “Tekst zawierać co najwyżej %{count} słów”
}
#validates_inclusion_of :date_start, :in => DateTime.civil(Date.today)…DateTime.civil(2020,1,1)
validates :amount, :presence => true
validates :date_start, :presence => true
end[/code]
baza danych
[code] create_table “things”, :force => true do |t|
t.string “text”
t.integer “amount”
t.datetime “created_at”, :null => false
t.datetime “updated_at”, :null => false
t.integer “user_id”
t.date “date_start”
t.boolean “done”
t.string “cost”
t.string “emission”
end
create_table “users”, :force => true do |t|
t.string “email”, :default => “”, :null => false
t.string “encrypted_password”, :default => “”, :null => false
t.string “reset_password_token”
t.datetime “reset_password_sent_at”
t.datetime “remember_created_at”
t.integer “sign_in_count”, :default => 0
t.datetime “current_sign_in_at”
t.datetime “last_sign_in_at”
t.string “current_sign_in_ip”
t.string “last_sign_in_ip”
t.datetime “created_at”, :null => false
t.datetime “updated_at”, :null => false
t.string “name”
t.string “street”
t.string “city”
t.string “zip”
t.string “nip”
end[/code]
No to
t = Thing.find(id)
pod t masz dane thinga
t.user
tu dane usera
Czasem chyba człowiek musi zadać głupie pytanie aby się odblokować Dzięki wielkie! :-))
Jak masz walidację długości pola
validates ..., :length
to nie musisz już sprawdzać czy pole jest obecne, bo przytoczona walidacja brak wartości uzna za wartość o długości 0. Chyba że ta walidacja jest po to, żeby odpowiedni komunikat błędu wyświetlić.