Maxim Kulkin
Posts: 58
Nickname: hapk
Registered: Sep, 2006
Maxim Kulkin is developer in Selectosa Systems.
|
|
|
|
������������ �� �������������� �� ActiveRecord
|
Posted: Nov 10, 2006 2:46 AM
|
|
Advertisement
|
�������������� �� ������������������ ���������������� �������������������������� ActiveRecord, ������������ ������ ������ �������� ���� ������ ������ �������������������� ����������������, ������ ���� ������������������ ���������������� �� �������������� �� ActiveRecord (����������������, ������������������������ ����������������������).
������������ �� ������������ �������������������� ActiveRecord - �������������������� @attributes. ������ ���� ���������� ������������������, ������ ���������������� ������ ������������ �������������������� AR. ���� ��������, ������ ������ "�������������� => ����������������" �� ������������ ������ (�� ������������ ������������) ���������������������������� ����������, �������������� ������������ ���� �������� ������������.
���� ���������������� ���������������� ���������������� - ���� ���������� �������������� ��������. ������ �������������� �� ������������������ �������� ������������ read_attribute(name) / write_attribute(name, value). ������������ ������������������/���������������������� ���������������� ����/�� @attributes, ������ ������������ ������������ ������������������ ����������������������������:
- read_attribute ������������������������ �������������������� �������� �� ��������, �������������������������������� �������� �������������� ���� (������, ����������������, ������������ sql �������� ������������ date ������������������������ �� �������������������� ������������ Date). ���������� �������� ���������� ������������������������ ���������������������������� ������������ ���� YAML (�������������� ������ �� ���������� ���������������������� ? =)). �������� ���������������� ���� �������������������������� �������������� �������� ������������ - ���������������� ������������������������ ������ ��������.
- write_attribute ����������: ���� ������������������������������ boolean ������������ �� ����������, ������������ ������������ - �� nil ������ ���������������� ����������������.
������ �������� �������������� �������� ���������������������� ����������������: [] / []=. ��.��. �������� ���� ���������������������������� ���������������� ������ ������������ ����������������, ���� ������������ / ������������ ������������ ������������ ������������������ �������� ���������������������� �������� "������������������" ��������������.
����������, �������� ���������������� attributes. ������ ������������, ������, �� ����������������, ������������ �������������������� ���������� �������� ������������������ (���� ������������������ ������������ ���������������� ��������, ������ ������������ attributes - ������ ������������������ AR ���� ������������������), �������������������� ������������ read_attribute (��.��. ������������ �� ���������������������� ������������ �� ����������������������������������). ���������� �������� ���������� ������������������������ ����������, ���������������������� ������������������ ������������������ ���������������� ������ ���������������� �������������������� ���� ������ (���������� :except �� :only). �������������� attributes= ������ ���� �������������������� ���������������� �������������������������������� ���������������� ���������������� (����������������, firstname=), �������� ������ �������������� ��������������, ������ ���� ���������������� �������������������������� (������, ���������������� ����������������, ���������� �������������������� ������ �� �������������� �� �������� �������������������� ������������ (�� ���������������������� - �������� ������������) �� �������������� ��������������).
�� ������������ ���������� ��������������������: ������������ �������������� ������������������������ _before_type_cast ����������. �������� ���������� �������������������� ���������������� �������������������������������� ���������� @attributes ����������������, ���������� ���������������������������� ������������ ������ �� read_attribute.
������������: * ������������ ���������������� ���������������� ������������ ���������������������������� (������������ ������ ������ ���� ���������������������� �� @attributes. �� �������������������� ������������ �� ���������������� �������� ���� ���������������� �������������� ������������ / ���������������� ������������ ���������������������� composed_of. ������ ������ �� �������� �������������� ������������ ������������������ ���� ���������� ������������������ ������������������������ ������������. * ������ �������������������� ������������������ ���������� ���������������� ���������� ���������������������� ������������ �� ������������������ ���� ����, ������ ������ ���������������� ���������������� True/False ���������� ������������������������ �� 1/0, ������������ ������������ - �� nil, ���������������������� _before_type_cast ������������������.
������������ ������������������ �������������������� �������������������� ������������ �� ���������������� �� ������������������: �������������� ������, ���������� ���������� �������� �������������������������� ���������� ������ ���������� HH:MM. ������ ����������:
1. �������������� ������������������ ���������������� ������ �������������������� ��������������������������:
class Event < ActiveRecord::Base def time_text "%d:%02d" % [self.time/60, self.time%60] end
def time_text=(value) self.time = begin parts = value.split ':' parts[0].to_i*60+parts.to_i rescue nil end end end
��������������! ������������ ������������ ���� ���������� text_field :event, :time_text �� ������ ������ ������������������������. ���� ���� �������������� ����������, �������� �� ������ �������� ������������. ���������������� ���� ������������������ ������. 2. �������� ������������������ �������������������������������������� ����������������:
class Event < ActiveRecord::Base def time_text self[:time_text] || ("%d:%02d" % [self.time/60, self.time%60]) end
def time_text=(value) self[:time_text] = value self.time = begin parts = value.split ':' parts[0].to_i*60+parts.to_i rescue nil end end end
text_field �������� ���� ���������������� (�������� ���� ������������������������) ����������������, �������������� �������������������� _before_type_cast ������������������. ������������, ������������������ ���� ������������������ ������������������������������������ ����������������, ���� ������������ �������������� ������, �������� ���������������� ������������.
������������ �������� ���������������� ������ ������������������:
class Event < ActiveRecord::Base validates_format_of :time_text, :with => /\d?\d\:\d\d/ end
���� ������, ��������������������, �� ������.
Read: ������������ �� �������������� �� ActiveRecord
|
|