Я пытаюсь настроить модель (клиента), которая содержит некоторые общие атрибуты о компании, но также с прикрепленным логотипом компании. Я не хочу использовать плагин, потому что я хочу понять этот аспект рельсов, если это возможно.
Я создал модель клиентов и модель изображения, и я могу создать новый клиент (код скаффолда) и загрузить соответствующее изображение (в порядке has_one :image
и belongs_to :client
).
Я использовал следующий код (взят прямо из Agile Rails, 3-е издание)
class Client < ActiveRecord::Base
has_one :image
def uploaded_image=(image_file)
self.image = Image.new
self.image.name = base_part_of(image_file.original_filename)
self.image.content_type = image_file.content_type
self.image.data = image_file.read
end
def base_part_of(filename)
File.basename(filename).gsub(/^\w_-/,'')
end
end
при редактировании объекта клиента, однако, новый файл загружается, но изменения не отражаются в БД. Нужно ли явно вызывать update-attribute для @ client.image? На данный момент мой метод обновления контроллера выглядит следующим образом:
def update
@client = Client.find(params[:id])
respond_to do |format|
if @client.update_attributes(params[:client])
flash[:notice] = 'Client was successfully updated.'
format.html { redirect_to(@client) }
format.xml { head :ok }
else
format.html { render :action => "edit" }
format.xml { render :xml => @client.errors, :status => :unprocessable_entity }
end
end
end
Заранее спасибо за любые советы, извинения за вопрос noob