You can use a gem such as declarative_authorization to do this. If you want to do it yourself, I would recommend just drying your code a bit:
class Owner::PropertiesController < Owner::BaseController
before_filter :check_owner, :only => [:update, :destroy]
def update
if @property.update_attributes(params[:property])
redirect_to([:owner, @property], :notice => 'Property was successfully updated.')
else
render :action => "edit"
end
end
def destroy
@property.destroy
redirect_to(owner_properties_url)
end
private
def check_owner
@property = Property.find(params[:id]
if @property.owner_id != session[:owner_id]
redirect_to([:owner, @property], :notice => "Property not found.") and return
end
end
end
, , , , , , /. :
def update
@owner = Owner.find(session[:owner_id])
@property = @owner.properties.find(params[:id])
redirect_to unauthorized_page and return if @property.nil?
end
, , , [: owner_id], . , , [: owner_id], . before_filter, .