LINUX.ORG.RU

Rails, глупый вопрос.


0

0

Идея такая.
Мigrate:
t.string :photo
View:
<% f.file_field :photo_file %>
Controller:
<none>
Model:
def photo_file=(field)
@photo = filed.read
end

=================
Объект field существует, но в БД почему-та не добавляеться.

Простите за глупый вопрос, но НИКАК не могу понять в чем дело, понимаю лиж то, что не допонимаю идеалогию ORM реализованную в Rails.

Если есть хорошая ссылка на решения этой проблеммы, прошу поделиться, сам ничего адекватного найти не смог.

★★

я не знаток рельс, но предположу, что для изменения состояния модели таки нужен контроллер.

barbuza
()

> что не допонимаю идеалогию ORM реализованную в Rails

Думаю сначала надо понять идеологию MVC и таки написать в контроллере код, который будет сохранять модель

PartyZan ★★★
()

>Controller:
><none> 
Уже сказали

>t.string :photo 
Как интересно ты будешь засовывать файл в такое поле? о_О 

>Model:
>def photo_file=(field)
>@photo = filed.read
>end 

Что ЭТО?

Надо хотя-бы как-нибудь так:
def photo_file=(input_data)
  unless input_data.blank?
# optional metadata:
#    self.photo_file_name = input_data.original_filename
#    self.photo_content_type = input_data.content_type.chomp
    self.file = input_data.read
  end
end

volh ★★
()
Ответ на: комментарий от volh

>>t.string :photo
>Как интересно ты будешь засовывать файл в такое поле? о_О

Прошу прощения, опечатался.
Конечно же:
t.binary :photo

-----

Почему помещять именно в контролер, а не в модель я не понимаю, ведь вроде модель должна отвечать за запрос типо "Принять файл", а не контроллер. Но учту ваше мнение, изучать начал недавно, по этому мог ошибиться (дойду до этого сам).

------

А вообще спасибо большое Ваш вариант заработал, промучился с этим уйму времени. Единственное чего я не могу понять, почему я сам до этого не дошол :-( (я был уверен, что такой вариант я уже пробывал)
Наверное во всем виновато ДНК, (хотя плохое знанее ООП и MVC и ORM и Ruby и Rails тоже нужно учесть.)
Вообщем БОЛЬШОЕ СПАСИБО!

ASM ★★
() автор топика

>>Model: >>def photo_file=(field) >> @photo = filed.read >>end Typo in string "@photo = filed.read" 'field' is not 'filed'

Replace with:

Model: def photo_file=(field) @photo = field.read end

Voobshe vash primer nekorrekten. Chto eto za @photo ? ActiveRecord eto ne to shtobi ORM (Object-Relational-Mapping), eto skoree naoborot, v naslednikov ActiveRecord::Base injectyatso methodi, ishodya iz SQL, chto pryamo protivopolzhno mnogim ORM sistemam.

Use attachement_fu by Rick Olsen

anonymous
()
Ответ на: комментарий от anonymous

>Use attachement_fu by Rick Olsen

Использование плагинов без знаний основ - убивать сразу.

volh ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.